<?php
	class GranPremio extends Zend_Db_Table_Abstract
	{
		protected $_primary = 'id_gp';
		protected $_name = 'gran_premio';
		
		/* Instancia de la Tabla  @var unknown_type  */
        protected static $_instance = null;
		
		/* Obtener la instancia de la tabla de manera estatica  @return Zend_Db_Table */
        public static function getInstance()
        {
            if (null === self::$_instance) {
                self::$_instance = new self();
            }
            return self::$_instance;
        }
		
		public function getGP($id)
		{
			$db = $this->getAdapter();
			$select = $db->select();
			
			//SI $ID ES NULL COJO EL PRIMER GP QUE NO HAYA FINALIZADO
			if ($id)
			{
				$select->from('gran_premio');
			    $select->where('id_gp = ?', $id);
			}
			else
			{
				$select->from('gran_premio');
			    $select->where('finalizado = 0');
				$select->limit(1);
			}
			
			return $db->fetchAll($select->__toString());
		}
		
		public static function getGrandesPremios()
		{
			$table = self::getInstance();
            $select = $table->select();
            $select->from($table);
			return $table->fetchAll($select);
		}
		
		/* Metodo estatico para obtener los grandes premios con resultados */
		public static function getResultados()
		{
            $table = self::getInstance();
            
            $select = $table->select();
			
            /* NOTA: Utilizar relaciones para numerar comentarios o suprimir el integrityCheck para usar JOIN ?  */
            $select->setIntegrityCheck(false);
            $select->from($table);
			
            /*  JOIN Left Datos Carrera  */
            $select->joinLeft('carrera', 'carrera.id_gp = gran_premio.id_gp');
            /* JOIN Left Piloto Pole Pos  */
			$select->joinLeft('piloto', 'piloto.id_piloto = carrera.id_piloto_pole',
				array (
					'piloto_pole' 	=> 'piloto.nombre_piloto',
					'escuderia_pole'=> 'piloto.escuderia'
				)
			);
			/*  JOIN Left Piloto Pos 1  */
			$select->joinLeft(array('piloto_p1'=>'piloto'),'piloto_p1.id_piloto = carrera.id_piloto_p1',
				array
				(
					'piloto_p1' 	=> 'piloto_p1.nombre_piloto',
					'escuderia_p1'=> 'piloto_p1.escuderia'
				)
			);
			/*  JOIN Left Piloto Pos 2  */
			$select->joinLeft(array('piloto_p2'=>'piloto'),'piloto_p2.id_piloto = carrera.id_piloto_p2',
				array
				(
					'piloto_p2' 	=> 'piloto_p2.nombre_piloto',
					'escuderia_p2'=> 'piloto_p2.escuderia'
				)
			);
			/* JOIN Left Piloto Pos 3  */
			$select->joinLeft(array('piloto_p3'=>'piloto'),'piloto_p3.id_piloto = carrera.id_piloto_p3',
				array
				(
					'piloto_p3' 	=> 'piloto_p3.nombre_piloto',
					'escuderia_p3'=> 'piloto_p3.escuderia'
				)
			);
            $select->group(
                array(
                    'gran_premio.id_gp',
                    'gran_premio.nombre_gp',
                    'gran_premio.fecha_gp',
                    'gran_premio.bandera',
                    'gran_premio.ubicacion',
                    'gran_premio.finalizado',
                    'gran_premio.cierre_apuesta'
                )
            );
			$select->where('gran_premio.finalizado!=0');
            $select->order('gran_premio.id_gp DESC');
			
            return $table->fetchAll($select);
		}
		
		//CAMBIAR EL ESTADO DE UN GRAN PREMIO
		public function updateEstado($id,$estado)
		{
			$table = new GranPremio();
			$data = array ('finalizado'   => $estado);
			$where = 'id_gp =' . $id;
			$table->update($data, $where);
		}
	}